/* Private domain structs for DOMID_XEN and DOMID_IO. */
struct domain *dom_xen, *dom_io;
-/* Frame table and its size in pages. */
-struct page_info *__read_mostly frame_table;
+/* Frame table size in pages. */
unsigned long max_page;
unsigned long total_pages;
{
unsigned long nr_pages, page_step, i, mfn;
- frame_table = (struct page_info *)FRAMETABLE_VIRT_START;
-
nr_pages = PFN_UP(max_page * sizeof(*frame_table));
page_step = 1 << (cpu_has_page1gb ? L3_PAGETABLE_SHIFT - PAGE_SHIFT
: L2_PAGETABLE_SHIFT - PAGE_SHIFT);
VMCOREINFO_PAGESIZE(PAGE_SIZE);
VMCOREINFO_SYMBOL(domain_list);
+#ifndef frame_table
VMCOREINFO_SYMBOL(frame_table);
+#else
+ {
+ static const void *const _frame_table = frame_table;
+ VMCOREINFO_SYMBOL_ALIAS(frame_table, _frame_table);
+ }
+#endif
VMCOREINFO_SYMBOL(max_page);
VMCOREINFO_STRUCT_SIZE(page_info);
extern void share_xen_page_with_privileged_guests(
struct page_info *page, int readonly);
-extern struct page_info *frame_table;
+#define frame_table ((struct page_info *)FRAMETABLE_VIRT_START)
extern unsigned long max_page;
extern unsigned long total_pages;
void init_frametable(void);